let arr = [1, 2, 5];

// 使用负向索引，进行操作

// 从索引-1 (即最后一个元素) 开始，删除0个元素，插入3和4
arr.splice(-1, 0, 3, 4);

alert(arr);

let arr2 = ['t', 'e', 's', 't'];

alert(arr2.slice(1, 3));

alert(arr2.slice(-2));


let arr3 = [1, 2];

alert(arr3.concat([3, 4]));

alert(arr3.concat([3, 4], [5, 6]));

alert(arr3.concat([3, 4], 5, 6));      


let arr4 = [1, 2];

// 通常，concat只复制数组中的元素，其他对象即使看起来像数组一样，但是仍然会被当做一个整体添加
let arrayLike = {
    0: 'something',
    length: 1
};

alert(arr4.concat(arrayLike));

// 但是，如果类似数组的对象中具有Symbol.isConcatSpreadable属性，那么它就会被concat当作一个数组来处理
let arr5 = [1, 2];

let arrayLike2 = {
    0: 'something',
    1: 'else',
    [Symbol.isConcatSpreadable]: true,
    length: 2
};

alert(arr5.concat(arrayLike2));